/**
 * @author Wcy
 * @Date 2022/3/19 16:43
 */

/**
 *  小明参加了学校的趣味运动会，其中的一个项目是：跳格子。
 *
 *     地上画着一些格子，每个格子里写一个字，如下所示：（也可参见p1.jpg）
 *
 * 从我做起振
 * 我做起振兴
 * 做起振兴中
 * 起振兴中华
 *
 *
 *     比赛时，先站在左上角的写着“从”字的格子里，可以横向或纵向跳到相邻的格子里，但不能跳到对角的格子或其它位置。一直要跳到“华”字结束。
 *
 *
 *     要求跳过的路线刚好构成“从我做起振兴中华”这句话。
 *
 *     请你帮助小明算一算他一共有多少种可能的跳跃路线呢？
 *
 * 答案是一个整数，请通过浏览器直接提交该数字。
 * 注意：不要提交解答过程，或其它辅助说明类的内容。
 */

//35
public class 振兴中华 {

    public static void main(String[] args) {

        int[][] dp = new int[6][6];
//        1 2 3 4 5
        for(int i=1;i<=5;i++) //预处理
//            实际只用到[4][5]
            dp[i][1] = dp[1][i] = 1;
        // 2 3 4 5 即从第二位开始遍历递归
        for(int i=2;i<=5;i++)
            for(int j=2;j<=5;j++)
            /*
             *   向上或向左搜寻
             */
                dp[i][j] = dp[i][j-1] + dp[i-1][j];
        System.out.println(f(4,5));
    }
    /*
     * 从我做起振
     * 我做起振兴
     * 做起振兴中
     * 起振兴中华
     */
    static int f(int x,int y){
        if(x==1 && y==1)
            return 1;
        if(x==1)
            return f(x,y-1);
        if(y==1)
            return f(x-1,y);
        return f(x-1,y) + f(x,y-1);
    }

}
